﻿using System.Reflection;
using AccesoDatos.Fabricas;
using Comandos.Interfaces;
using ObjetosComunes.Entidades;
using ObjetosComunes.Logger;
using ObjetosComunes.Recursos;

namespace Comandos.Implementacion.ComandosPersonal
{
    /// <summary> Comando que agrega los datos de una aseguradora </summary>
    public class Agregar :IComando<int>
    {

        #region Atributos

        /// <summary>
        /// Datos de la aseguradora a almacenar
        /// </summary>
        private readonly Personal _personal;

        #endregion

        #region Constructor

        /// <summary> Constructor de la clase </summary>
        /// <param name="personal">Datos de la personal a almacenar</param>
        public Agregar(Personal personal)
        {
            _personal = personal;
        }

        #endregion

        #region implementacion

        /// <summary> Metodo que ejecuta la accion del comando </summary>
        /// <returns></returns>
        public int Ejecutar()
        {
            #region Instrumentacion Entrada
            if (Log.InfoHabilitado)
                Log.Info(string.Format(Recurso.EntrandoMetodo, MethodBase.GetCurrentMethod().Name));
            #endregion

            var dao = FabricaDao.ObtenerFabrica(TipoFabrica.Mysql).ObtenerDaoPersonal();
            var retorno = dao.AgregarPersonal(_personal);
            
            #region Instrumentacion Salida
            if (Log.InfoHabilitado)
                Log.Info(string.Format(Recurso.SaliendoMetodo, MethodBase.GetCurrentMethod().Name));
            #endregion
            return retorno;
        }

        #endregion
    }
}
